# Contributor: Łukasz Jendrysik <scadu@yandex.com>
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=subversion
pkgver=1.14.2
pkgrel=3
_py3c_ver=1.4
pkgdesc="Replacement for CVS, another versioning system (svn)"
url="https://subversion.apache.org/"
arch="all"
license="Apache-2.0 BSD"
makedepends="apache2-dev apr-util-dev autoconf automake e2fsprogs-dev libtool
	lz4-dev neon-dev perl-dev python3-dev serf-dev swig boost-dev"
install="$pkgname.pre-install"
subpackages="$pkgname-dev $pkgname-doc mod_dav_svn
	$pkgname-bash-completion:bashcomp:noarch
	perl-$pkgname:pl py3-$pkgname:py $pkgname-libs
	$pkgname-openrc"
source="https://archive.apache.org/dist/subversion/subversion-$pkgver.tar.bz2
	py3c-$_py3c_ver.tar.gz::https://github.com/encukou/py3c/archive/v$_py3c_ver.tar.gz
	subversion-1.7.0-deplibs.patch
	subversion-perl-deplibs.patch
	subversion-1.12.0-linking.patch
	svnserve.confd
	svnserve.initd"

# secfixes:
#   1.14.2-r0:
#     - CVE-2021-28544
#     - CVE-2022-24070
#   1.14.1-r0:
#     - CVE-2020-17525
#   1.12.2-r0:
#     - CVE-2019-0203
#     - CVE-2018-11782
#   1.11.1-r0:
#     - CVE-2018-11803
#   1.9.7-r0:
#     - CVE-2017-9800

prepare() {
	default_prepare
	mv build-outputs.mk build-outputs.mk.old
	PYTHON=python3 LIBTOOL_CONFIG=/usr/share/libtool/build-aux ./autogen.sh --release
	# fix shebangs
	sed -i -e 's|/usr/bin/env perl -w|/usr/bin/perl -w|' tools/hook-scripts/*.pl.in
	sed -e 's|/usr/bin/env python.*|/usr/bin/python3|' subversion/tests/cmdline/svneditor.py
}

build() {
	local _pydir=$(python3 -c "import sysconfig;print(sysconfig.get_path('stdlib'))")
	unset CPPFLAGS
	export PYTHON=python3
	./configure \
		--build=$CBUILD \
		--host=$CHOST \
		--prefix=/usr \
		--disable-nls \
		--with-apxs \
		--with-apache-libexecdir \
		--with-py3c=../py3c-$_py3c_ver \
		--with-swig \
		--disable-javahl \
		--disable-static \
		--enable-disallowing-of-undefined-references \
		--without-jdk \
		--with-serf \
		--with-utf8proc=internal
	make all
	make swig-pl-lib
	(cd subversion/bindings/swig/perl/native ; perl Makefile.PL)
	# need override LD_RUN_PATH with something valid, otherwise we get
	# empty rpath which is not a good idea.
	make -j1 -C subversion/bindings/swig/perl/native \
		LD_RUN_PATH="/usr/lib" EXTRALIBS="-lapr-1"
	# SWIG 3.x does not support Python comments
	grep -Ev "^ +#" subversion/bindings/swig/include/proxy.swg > \
		subversion/bindings/swig/include/proxy.swg.tmp
	mv subversion/bindings/swig/include/proxy.swg.tmp \
		subversion/bindings/swig/include/proxy.swg
	make swig-py swig-py-lib \
		swig_pydir="$_pydir/libsvn"\
		swig_pydir_extra="$_pydir/svn"
}

check() {
	make test
}

package() {
	local _pydir=$(python3 -c "import sysconfig;print(sysconfig.get_path('stdlib'))")
	make -j1 DESTDIR="$pkgdir" \
		swig_pydir="$_pydir/libsvn"\
		swig_pydir_extra="$_pydir/svn" \
		install install-swig-pl-lib install-swig-py
	make pure_vendor_install -C subversion/bindings/swig/perl/native \
		PERL_INSTALL_ROOT="$pkgdir"
	find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete

	install -Dm755 "$srcdir"/svnserve.initd "$pkgdir"/etc/init.d/svnserve
	install -Dm644 "$srcdir"/svnserve.confd "$pkgdir"/etc/conf.d/svnserve

	mkdir -p "pkgdir"/usr/lib
	mv "$pkgdir"/usr/share/pkgconfig "$pkgdir"/usr/lib
}

mod_dav_svn() {
	pkgdesc="Apache httpd module for $pkgname server"
	mkdir -p "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/apache2 "$subpkgdir"/usr/lib/
}

bashcomp() {
	depends=""
	pkgdesc="Bash completion for $pkgname"
	install_if="$pkgname=$pkgver-r$pkgrel bash-completion"

	install -Dm644 "$builddir"/tools/client-side/bash_completion \
		"$subpkgdir"/usr/share/bash-completion/completions/$pkgname
	cd "$subpkgdir"/usr/share/bash-completion/completions
	local i; for i in svn svnadmin svndumpfilter svnlook svnsync svnversion; do
		ln -sf $pkgname $i
	done
}

pl() {
	pkgdesc="Perl bindings to $pkgname"
	mkdir -p "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/*perl* "$subpkgdir"/usr/lib/
}

py() {
	pkgdesc="Python bindings to $pkgname"
	mkdir -p "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/lib*swig*py* \
		"$pkgdir"/usr/lib/python* \
		"$subpkgdir"/usr/lib/
}

sha512sums="
20ada4688ca07d9fb8da4b7d53b5084568652a3b9418c65e688886bae950a16a3ff37710fcfc9c29ef14a89e75b2ceec4e9cf35d5876a7896ebc2b512cfb9ecc  subversion-1.14.2.tar.bz2
db71db2c19a16ba5a430b676beb357faee5b67b161478932af13dd06be23b5505da85dbaf5b2447f95590fea55b833ee33fa19d3350ba3117f3364a9ab012ee6  py3c-1.4.tar.gz
fb219c45b80602d919176cc191394df09f90d0f5c7d24e6a36b166bd92777ecae67eeac1e49c0ffbb0e724396b3d2094dbb0bef17d01dc87d418b1cd554bd7c4  subversion-1.7.0-deplibs.patch
fd6e5f45cff4d3cf0d885a34c822b32141b13b199d99ad8e1b04d641c9c1ee27e73f5c556a4ad54a900b6d39cc14afad17b6738d8af44c76758f1a27b4d49f9a  subversion-perl-deplibs.patch
7d46f2ee0bbba53b6dc9312b35000b1433a46edb09f61030da1ff66951bc204fc90598e5b07ce2554d46508d5a9e8193152131ae21050901c7b40cb034fb5cc3  subversion-1.12.0-linking.patch
7fe993443d4d3ef5e1e75f60e85036ee0b2bb2636c2c830210e64f525f95ae4c10ca1dc4504fc36915ec9391815becbe7cbf5f589c28609386d8d079ed02c630  svnserve.confd
f6392193cc65aaceee9b6e5e66f80af4b095ba4007e8536e8b1c4e8b2c75610d7f5596b83e5edd504672f021c074887fc6464cf4fc1dfe9446741105f11cd855  svnserve.initd
"
